package main

import (
	"fmt"
)

func main() {
	p := person{
		name: "tuanzhang",
		age:  18,
	}

	defer fullName(p)
	fmt.Println("测试延迟调用方法")

	/*
	    当一个函数有多个延迟调用时，它们被添加到一个堆栈中，
	   并在Last In First Out（LIFO）后进先出的顺序中执行。
	*/
	name := "tuanzhang"
	fmt.Printf("调用前=%s \n", name)
	fmt.Println("调用后：")
	for _, i2 := range name {
		defer fmt.Printf("%c", i2)
	}
}

type person struct {
	name string
	age  int
}

func fullName(person2 person) {
	fmt.Printf("姓名=%s,年龄=%d", person2.name, person2.age)
}
